package com.dhcc.producter.advance.config;

import java.io.IOException;

import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.connection.CorrelationData;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import com.rabbitmq.client.ConfirmCallback;

@Configuration
public class RabbitmqConfig {

//	private String host;

//	private String port;

//	private String username;

//	private String password;

	@Bean
	public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory) {
		// 创建一个RabbitTemplate对象，并返回
		RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
		// 绑定回调函数
		rabbitTemplate.setConfirmCallback(new RabbitTemplate.ConfirmCallback() {

			@Override
			public void confirm(CorrelationData correlationData, boolean ack, String cause) {
				if (ack) {
					System.out.println("消息正常发送给交换机");
				} else {
					System.out.println("消息没有正常发送给交换机,失败原因：" + cause);
					if (correlationData != null) {
						// 再次发送消息，需要获取消息的内容
						// 1、获取到消息的唯一标识id
						String id = correlationData.getId();
						System.out.println("消息唯一标识ID：" + id);
						// TODO：2、查询数据库
						
						// TODO: 3、判断消息最大消息发送次数是否大于已发送的次数，如果大于，继续发，否则不在发送
					}
				}
			}
		});
		return rabbitTemplate;
	}
}
